// src/utils/localStorage.ts

export const localStorageUtil = {
  /**
   * 设置值到 localStorage
   * @param key 键名
   * @param value 值（如果是对象，会自动转换为 JSON 字符串）
   */
  set(key: string, value: any): void {
    try {
      const serializedValue = value && typeof value === 'object' ? JSON.stringify(value) : value;
      localStorage.setItem(key, serializedValue);
    } catch (error) {
      console.error(`Failed to set value for key "${key}" in localStorage:`, error);
    }
  },

  /**
   * 从 localStorage 获取值
   * @param key 键名
   * @returns 返回存储的值（如果是 JSON 字符串，会自动解析为对象）
   */
  get(key: string): any {
    try {
      const value = localStorage.getItem(key);
      if (value) {
        try {
          return JSON.parse(value); // 尝试解析为 JSON 对象
        } catch {
          return value; // 如果解析失败，返回原始字符串
        }
      }
      return null; // 如果 key 不存在，返回 null
    } catch (error) {
      console.error(`Failed to get value for key "${key}" from localStorage:`, error);
      return null;
    }
  },

  /**
   * 从 localStorage 移除值
   * @param key 键名
   */
  remove(key: string): void {
    try {
      localStorage.removeItem(key);
    } catch (error) {
      console.error(`Failed to remove key "${key}" from localStorage:`, error);
    }
  },

  /**
   * 清空 localStorage
   */
  clear(): void {
    try {
      localStorage.clear();
    } catch (error) {
      console.error('Failed to clear localStorage:', error);
    }
  },
};
